package com.molichuxing.services.infrastructure.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.molichuxing.framework.dao.RootMapper;
import com.molichuxing.framework.dto.TabDto;
import com.molichuxing.services.infrastructure.bean.OfflineBean;

public interface OfflineMapper extends RootMapper<OfflineBean> {

    /**
     * 根据条件分页查询count
     *
     * @param params
     * @return
     */
    long getPageCount(@Param("params") Map<String, Object> params);

    /**
     * 根据条件分页查询
     *
     * @param params
     * @param pageNum
     * @param pageSize
     * @return
     */
    List<OfflineBean> getPage(@Param("params") Map<String, Object> params, @Param("pageNum") int pageNum,
                              @Param("pageSize") int pageSize);

    /**
     * 根据条件查询count
     *
     * @param params
     * @return
     */
    long getOfflineListCount(@Param("params") Map<String, Object> params);

    /**
     * 通过审核状态获取线下支付数量
     *
     * @return
     */
    List<TabDto> getCountByAuditStatus(@Param("dealerId") Integer dealerId);

    /**
     * 根据条件查询
     *
     * @param params
     * @return
     */
    List<OfflineBean> getOfflineList(@Param("params") Map<String, Object> params);


    /**
     * 根据流水号条件查询
     *
     * @param serialNumber
     * @param auditStatusList
     * @return
     */
    OfflineBean getOffline(@Param("serialNumber") String serialNumber, @Param("auditStatusList") List<Integer> auditStatusList);

    /**
     * 是否存在未审核的信息
     *
     * @param ids
     * @return
     */
    int getUnAuditCount(@Param("ids") List<Integer> ids);

    /**
     * 审核
     *
     * @param offlineBean
     * @return
     */
    int modifyAuditStatus(OfflineBean offlineBean);

    /**
     * 获取数量
     *
     * @return
     */
    int getOfflineCount(@Param("repayType") Integer repayType);

    /**
     * 通过流水号查询
     *
     * @param serialNumberList
     * @return
     */
    List<OfflineBean> getOfflineBySerialNumber(@Param("serialNumberList") List<String> serialNumberList);

    /**
     * 获取用户订单线下还款tab标签数据
     *
     * @return
     */
    List<TabDto> getMemberTabsStatistics();

    /**
     * 获取支付数量
     *
     * @param params
     * @return
     */
    int getOfflineCountByParams(@Param("params") Map<String, Object> params);

}